/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package modelo.personas.profesionales;

import java.util.HashSet;
import java.util.Set;
import javax.persistence.*;
import modelo.personas.PersonaFisica;

/**
 *
 * @author raul
 */
@Entity
public class Profesional extends PersonaFisica implements Cloneable, Comparable<Profesional> {
    private String matricula;
    
    @ManyToMany (targetEntity=Especialidad.class,cascade=CascadeType.ALL, fetch=FetchType.LAZY)
    private Set<Especialidad> especialidades = new HashSet();
    
    public Profesional() {
    }

    public Set<Especialidad> getEspecialidades() {
        return especialidades;
    }

    public void setEspecialidades(Set<Especialidad> especialidades) {
        this.especialidades = especialidades;
    }

    public String getMatricula() {
        return matricula;
    }

    public void setMatricula(String matricula) {
        this.matricula = matricula;
    }

    @Override
    public boolean equals(Object obj) {
        return super.equals(obj);
    }

    @Override
    public int hashCode() {
        return super.hashCode();
    }

    
    @Override
    protected Object clone() throws CloneNotSupportedException {
        return super.clone();
    }

    @Override
    public int compareTo(Profesional o) {
        int result;
        if (this.equals(o)){
            result = 0;
        } else {
            result = getApellido().compareTo(o.getApellido());
            if (result == 0)
                result = getNombre().compareTo(o.getNombre());
            if (result == 0)
                result = getDocumento().compareTo(o.getDocumento());
        }
        return result;
    }
 
}
